Skip to content

Conversation

@WalshyDev
Copy link
Contributor

Adds a new transport option to the Cloudflare provider, this allows specifying a custom fetch implementation. This allows for Workers VPC to send into an internal Sentry.

Example usage:

export default Sentry.withSentry(
  (env: Env) => ({
    dsn: env.SENTRY_DSN,
    release: env.VERSION_METADATA.tag ?? env.VERSION_METADATA.id,
    transportOptions: {
      fetch: env.SENTRY_VPC_BRIDGE.fetch.bind(env.SENTRY_VPC_BRIDGE),
    },
  }),
  {
    async fetch(req, env) {
      return new Response("ok");
    },
};

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@WalshyDev WalshyDev force-pushed the walshy/add-custom-fetch-cf-transport branch from f6ab666 to 05a871a Compare November 26, 2025 09:43
@WalshyDev WalshyDev changed the title Allow specifying a custom fetch in Cloudflare transport options feat(cloudflare): Allow specifying a custom fetch in Cloudflare transport options Nov 26, 2025
@WalshyDev WalshyDev force-pushed the walshy/add-custom-fetch-cf-transport branch from 05a871a to b55e9e1 Compare November 28, 2025 02:55
Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, thanks for opening this PR! This makes sense to me on first glance but I'll let @JPeer264 and @AbhiPrasad have the final say.

@Lms24 Lms24 requested review from AbhiPrasad and JPeer264 November 28, 2025 11:14
Copy link
Member

@AbhiPrasad AbhiPrasad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@AbhiPrasad AbhiPrasad merged commit 5c51fdb into getsentry:develop Nov 28, 2025
47 checks passed
@WalshyDev WalshyDev deleted the walshy/add-custom-fetch-cf-transport branch November 28, 2025 23:12
@WalshyDev
Copy link
Contributor Author

Thank you!

Doridian pushed a commit to foxCaves/foxCaves that referenced this pull request Dec 3, 2025
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@sentry/react](https://github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://github.com/getsentry/sentry-javascript)) | [`10.27.0` -> `10.28.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/10.27.0/10.28.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/10.28.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/10.27.0/10.28.0?slim=true) |

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v10.28.0`](https://github.com/getsentry/sentry-javascript/releases/tag/10.28.0)

[Compare Source](getsentry/sentry-javascript@10.27.0...10.28.0)

##### Important Changes

- **feat(core): Make `matcher` parameter optional in `makeMultiplexedTransport` ([#&#8203;10798](getsentry/sentry-javascript#10798

The `matcher` parameter in `makeMultiplexedTransport` is now optional with a sensible default. This makes it much easier to use the multiplexed transport for sending events to multiple DSNs based on runtime configuration.

**Before:**

```javascript
import { makeFetchTransport, makeMultiplexedTransport } from '@&#8203;sentry/browser';

const EXTRA_KEY = 'ROUTE_TO';

const transport = makeMultiplexedTransport(makeFetchTransport, args => {
  const event = args.getEvent();
  if (event?.extra?.[EXTRA_KEY] && Array.isArray(event.extra[EXTRA_KEY])) {
    return event.extra[EXTRA_KEY];
  }
  return [];
});

Sentry.init({
  transport,
  // ... other options
});

// Capture events with routing info
Sentry.captureException(error, {
  extra: {
    [EXTRA_KEY]: [
      { dsn: 'https://key1@&#8203;sentry.io/project1', release: 'v1.0.0' },
      { dsn: 'https://key2@&#8203;sentry.io/project2' },
    ],
  },
});
```

**After:**

```javascript
import { makeFetchTransport, makeMultiplexedTransport, MULTIPLEXED_TRANSPORT_EXTRA_KEY } from '@&#8203;sentry/browser';

// Just pass the transport generator - the default matcher handles the rest!
Sentry.init({
  transport: makeMultiplexedTransport(makeFetchTransport),
  // ... other options
});

// Capture events with routing info using the exported constant
Sentry.captureException(error, {
  extra: {
    [MULTIPLEXED_TRANSPORT_EXTRA_KEY]: [
      { dsn: 'https://key1@&#8203;sentry.io/project1', release: 'v1.0.0' },
      { dsn: 'https://key2@&#8203;sentry.io/project2' },
    ],
  },
});
```

The default matcher looks for routing information in `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`. You can still provide a custom matcher function for advanced use cases.

- **feat(nextjs): Support cacheComponents on turbopack ([#&#8203;18304](getsentry/sentry-javascript#18304

This release adds support for `cacheComponents` on turbopack builds. We are working on adding support for this feature in webpack builds as well.

##### Other Changes

- feat: Publish AWS Lambda Layer for Node 24 ([#&#8203;18327](getsentry/sentry-javascript#18327))
- feat(browser): Expose langchain instrumentation ([#&#8203;18342](getsentry/sentry-javascript#18342))
- feat(browser): Expose langgraph instrumentation ([#&#8203;18345](getsentry/sentry-javascript#18345))
- feat(cloudflare): Allow specifying a custom fetch in Cloudflare transport options ([#&#8203;18335](getsentry/sentry-javascript#18335))
- feat(core): Add `isolateTrace` option to `Sentry.withMonitor()` ([#&#8203;18079](getsentry/sentry-javascript#18079))
- feat(deps): bump [@&#8203;sentry/webpack-plugin](https://github.com/sentry/webpack-plugin) from 4.3.0 to 4.6.1 ([#&#8203;18272](getsentry/sentry-javascript#18272))
- feat(nextjs): Add cloudflare `waitUntil` detection ([#&#8203;18336](getsentry/sentry-javascript#18336))
- feat(node): Add LangChain v1 support ([#&#8203;18306](getsentry/sentry-javascript#18306))
- feat(remix): Add parameterized transaction naming for routes ([#&#8203;17951](getsentry/sentry-javascript#17951))
- fix(cloudflare): Keep http root span alive until streaming responses are consumed ([#&#8203;18087](getsentry/sentry-javascript#18087))
- fix(cloudflare): Wait for async events to finish ([#&#8203;18334](getsentry/sentry-javascript#18334))
- fix(core): `continueTrace` doesn't propagate given trace ID if active span exists ([#&#8203;18328](getsentry/sentry-javascript#18328))
- fix(node-core): Handle custom scope in log messages without parameters ([#&#8203;18322](getsentry/sentry-javascript#18322))
- fix(opentelemetry): Ensure Sentry spans don't leak when tracing is disabled ([#&#8203;18337](getsentry/sentry-javascript#18337))
- fix(react-router): Use underscores in trace origin values ([#&#8203;18351](getsentry/sentry-javascript#18351))
- chore(tanstackstart-react): Export custom inits from tanstackstart-react ([#&#8203;18369](getsentry/sentry-javascript#18369))
- chore(tanstackstart-react)!: Remove empty placeholder implementations ([#&#8203;18338](getsentry/sentry-javascript#18338))

<details>
  <summary><strong>Internal Changes</strong></summary>

- chore: Allow URLs as issue ([#&#8203;18372](getsentry/sentry-javascript#18372))
- chore(changelog): Add entry for [#&#8203;18304](getsentry/sentry-javascript#18304) ([#&#8203;18329](getsentry/sentry-javascript#18329))
- chore(ci): Add action to track all PRs as issues ([#&#8203;18363](getsentry/sentry-javascript#18363))
- chore(github): Adjust `BUGBOT.md` rules to flag invalid op and origin values during review ([#&#8203;18352](getsentry/sentry-javascript#18352))
- ci: Add action to create issue on gitflow merge conflicts ([#&#8203;18319](getsentry/sentry-javascript#18319))
- ci(deps): bump actions/checkout from 5 to 6 ([#&#8203;18268](getsentry/sentry-javascript#18268))
- ci(deps): bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 ([#&#8203;18361](getsentry/sentry-javascript#18361))
- test(cloudflare): Add typechecks for cloudflare-worker e2e test ([#&#8203;18321](getsentry/sentry-javascript#18321))

</details>

#### Bundle size 📦

| Path                                                                                                  | Size      |
| ----------------------------------------------------------------------------------------------------- | --------- |
| [@&#8203;sentry/browser](https://github.com/sentry/browser)                                                  | 24.22 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) - with treeshaking flags                         | 22.76 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing)                                  | 40.57 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Profiling)                       | 45.05 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay)                          | 78.08 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 68.05 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 82.65 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 94.61 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Feedback)                                 | 40.51 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback)                             | 28.8 KB   |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync)                            | 33.66 KB  |
| [@&#8203;sentry/react](https://github.com/sentry/react)                                                      | 25.9 KB   |
| [@&#8203;sentry/react](https://github.com/sentry/react) (incl. Tracing)                                      | 42.72 KB  |
| [@&#8203;sentry/vue](https://github.com/sentry/vue)                                                          | 28.56 KB  |
| [@&#8203;sentry/vue](https://github.com/sentry/vue) (incl. Tracing)                                          | 42.32 KB  |
| [@&#8203;sentry/svelte](https://github.com/sentry/svelte)                                                    | 24.24 KB  |
| CDN Bundle                                                                                            | 26.57 KB  |
| CDN Bundle (incl. Tracing)                                                                            | 41.22 KB  |
| CDN Bundle (incl. Tracing, Replay)                                                                    | 76.9 KB   |
| CDN Bundle (incl. Tracing, Replay, Feedback)                                                          | 82.23 KB  |
| CDN Bundle - uncompressed                                                                             | 78.09 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                                                             | 122.4 KB  |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                                                     | 235.71 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed                                           | 248.17 KB |
| [@&#8203;sentry/nextjs](https://github.com/sentry/nextjs) (client)                                           | 44.88 KB  |
| [@&#8203;sentry/sveltekit](https://github.com/sentry/sveltekit) (client)                                     | 40.92 KB  |
| [@&#8203;sentry/node-core](https://github.com/sentry/node-core)                                              | 50.06 KB  |
| [@&#8203;sentry/node](https://github.com/sentry/node)                                                        | 155.7 KB  |
| [@&#8203;sentry/node](https://github.com/sentry/node) - without tracing                                      | 90.67 KB  |
| [@&#8203;sentry/aws-serverless](https://github.com/sentry/aws-serverless)                                    | 105.61 KB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4yNy4xIiwidXBkYXRlZEluVmVyIjoiNDIuMjcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.foxden.network/foxCaves/foxCaves/pulls/12
Co-authored-by: Renovate <renovate@foxden.network>
Co-committed-by: Renovate <renovate@foxden.network>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants